package com.zmz.lambda;

import java.awt.event.WindowStateListener;

/**
 * Create with IntelliT IDEA
 *
 * @Author: zhengmingzhe
 * @Date: 2022/07/30/17:04
 * @Description: 使用Lambda 语法简化6种接口的表达
 */
public class Lambda01 {
    public static void main(String[] args) {
        //    无参无返回(未使用Lambda表达式调用语法较麻烦)
        NoReturnNoParam noReturnNoParam = new NoReturnNoParam() {
            @Override
            public void method() {
                System.out.println("未使用Lambda表达式!");
                System.out.println("未使用Lambda表达式!");
            }
        };
        noReturnNoParam.method();

//        无参无返回 使用Lambda表达式简化
        NoReturnNoParam noReturnNoParam0 = () -> {
            System.out.println("未使用Lambda表达式!");
            System.out.println("未使用Lambda表达式!");
        };
        noReturnNoParam0.method();
        // 无参无返回 使用Lambda表达式再次简化(这样写的前提是方法体里只有一句话)
        NoReturnNoParam noReturnNoParam1 = () -> System.out.println("未使用Lambda表达式!");
        noReturnNoParam1.method();


//       一个参数无返回值 使用Lambda表达式简化(打印10)
        NoReturnOneParam noReturnOneParam0 = (int a) -> System.out.println(a);
        noReturnOneParam0.method(10);

        //一个参数无返回值 使用Lambda表达式简化 也可以省略参数类型(打印12)
        NoReturnOneParam noReturnOneParam1 = (a) -> System.out.println(a);
        noReturnOneParam1.method(12);

//        多个参数无返回值(输出1和2)
        NoReturnMultiParam noReturnMultiParam = (int a, int b) ->
        {
            System.out.println(a);
            System.out.println(b);
        };
        noReturnMultiParam.method(1, 2);

//无参数有返回值  此时如果只有一条语句就可以去掉大括号(两种写法都是打印返回值110)
        ReturnNoParam returnNoParam0 = () -> {
            return 110;
        };
        ReturnNoParam returnNoParam1 = () -> 110;
        System.out.println(returnNoParam0.method());
        System.out.println(returnNoParam1.method());


        //    一个参数有返回值(输出6)
        ReturnOneParam returnOneParam = (a) -> a;
        System.out.println(returnOneParam.method(6));

       //多个参数有返回值(输出30)
        ReturnMultiParam returnMultiParam =(int a,int b)->a+b;
        System.out.println(returnMultiParam.method(10,20));



    }
}
